home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbdatabs / winmain.h < prev    next >
C/C++ Source or Header  |  1999-03-17  |  15KB  |  446 lines

  1. // ------------------------------- //
  2. // -------- Start of File -------- //
  3. // ------------------------------- //
  4. // ----------------------------------------------------------- // 
  5. // C++ Header File Name: winmain.h
  6. // C++ Compiler Used: MSVC40, HPUX CPP 10.24
  7. // Produced By: Doug Gaer 
  8. // File Creation Date: 12/16/1997 
  9. // Date Last Modified: 03/18/1999
  10. // Copyright (c) 1997 Douglas M. Gaer
  11. // ----------------------------------------------------------- // 
  12. // ---------- Include File Description and Details  ---------- // 
  13. // ----------------------------------------------------------- // 
  14. /*
  15. The VBD C++ classes are copyright (c) 1997, by Douglas M. Gaer.
  16. All those who put this code or its derivatives in a commercial
  17. product MUST mention this copyright in their documentation for
  18. users of the products in which this code or its derivative
  19. classes are used. Otherwise, you have the freedom to redistribute
  20. verbatim copies of this source code, adapt it to your specific
  21. needs, or improve the code and release your improvements to the
  22. public provided that the modified files carry prominent notices
  23. stating that you changed the files and the date of any change.
  24.  
  25. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
  26. THE ENTIRE RISK OF THE QUALITY AND PERFORMANCE OF THIS SOFTWARE
  27. IS WITH YOU. SHOULD ANY ELEMENT OF THIS SOFTWARE PROVE DEFECTIVE,
  28. YOU WILL ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
  29. CORRECTION.
  30.  
  31. This is a test program used to test the (P)ersistent base class
  32. in a practical database application using the wxWindow GUI library
  33. version 1.68
  34. */
  35. // ----------------------------------------------------------- //
  36. #ifndef __WINMAIN_HPP__
  37. #define __WINMAIN_HPP__
  38.  
  39. #include "grocery.h"
  40. #include "config.h"
  41. #include "timer.h"
  42. #include "version.h"
  43. #include "groc_sh.h"
  44. #include "pscript.h"
  45.  
  46. #ifdef __GNUG__
  47. #pragma implementation
  48. #pragma interface
  49. #endif
  50.  
  51. // For compilers that support precompilation, includes "wx.h".
  52. #include "wx_prec.h"
  53.  
  54. #ifdef __BORLANDC__
  55. #pragma hdrstop
  56. #endif
  57.  
  58. #ifndef WX_PRECOMP
  59. #include "wx.h"
  60. #endif
  61.  
  62. // Define this macro to use the wxWindows printing features under
  63. // Microsoft Windows. A separate PostScript driver is provided for
  64. // UNIX system. Define this macro for UNIX compiles to enable MSW
  65. // style printing in motif using wxWindow 1.68B.
  66. // #ifndef __USE_MSW_PRINTING__
  67. // #define __USE_MSW_PRINTING__
  68. // #endif
  69.  
  70. #ifdef __USE_MSW_PRINTING__
  71. // Setup wxWindows printing for MSW
  72. #if !USE_PRINTING_ARCHITECTURE
  73. #error You must set USE_PRINTING_ARCHITECTURE to 1 in wx_setup.h to compile 
  74. #endif
  75.  
  76. #include "wx_mf.h"
  77. #include "wx_print.h"
  78. #endif // __USE_MSW_PRINTING__
  79.  
  80. // Define new frame types for wxWindow frames and sub-frames
  81. class MyFrame;       // Main window frame
  82. class MyTextWindow;  // Text windos frames
  83. class MyText;        // Class used to encapsulate wxText objects
  84.  
  85. // Define configurable parameters
  86. int CacheSize = 15;  // Memory cache size for the index file
  87. int AdminRights = 0; // Define user privileges 
  88.  
  89. // Define file access modes used in the application
  90. VBDFile::AccessMode RWMode = VBDFile::READWRITE;
  91. VBDFile::AccessMode ROMode = VBDFile::READONLY;
  92.  
  93. // Function prototypes for wxWindows controls
  94. void AddBtnProc(wxButton& but, wxCommandEvent& event);
  95. void ClearAddPanel();
  96. void ChBtnProc(wxButton& but, wxCommandEvent& event);
  97. void ClearChangePanel();
  98. void DsBtnProc(wxButton& but, wxCommandEvent& event);
  99. void ClearDisplayPanel();
  100. void text_proc(wxText &but, wxCommandEvent &event);
  101.  
  102. #ifdef __USE_MSW_PRINTING__
  103. void  page_btn_proc(wxButton& but, wxCommandEvent& event);
  104. #endif // __USE_MSW_PRINTING__
  105.  
  106. // File menu functions
  107. void ExportToASCII(MyTextWindow &textWin);
  108. void ImportFromASCII(MyTextWindow &textWin);
  109. void BackUp(MyTextWindow &textWin);
  110. void Merge(MyTextWindow &textWin);
  111. void CreateTemplate(MyTextWindow &textWin);
  112. void CompareIndexFile(MyTextWindow &textWin);
  113. void RebuildIndexFile(MyTextWindow &textWin);
  114.  
  115. // Database menu functions
  116. void Add(MyTextWindow &textWin);
  117. void Change(MyTextWindow &textWin);
  118. void Remove(MyTextWindow &textWin, char *keyNM = 0);
  119. void DisplayDB(MyTextWindow &textWin); 
  120. void SetPurchasing(MyTextWindow &textWin, char purchasing);
  121.  
  122. // Find menu functions
  123. void FindBy(MyTextWindow &textWin, const char *MemberName, GrocDBItem item);
  124.  
  125. // Print menu functions
  126. void ASCIIPrintAll(MyTextWindow &textWin); 
  127. void PostScriptPrint(MyTextWindow & textWin);
  128.  
  129. // View menu functions
  130. void Clear(MyTextWindow &textWin);
  131. void ViewTotals(MyTextWindow &textWin);
  132.  
  133. // Function prototypes for non-menu functions
  134. void DisplayObject(Grocery &grocery);
  135. int LoadIndexKeys(int load_all = 1);
  136. void LoadGKeys(EntryKey &e);
  137. void ReOrderDisplayList();
  138. void PrintItemBar(ofstream &stream);
  139. void PrintLineByLine(Grocery &grocery, ofstream &stream);
  140. void PostScriptPrintTotals(MyTextWindow &textWin, ofstream &stream,
  141.                PostScriptDrv &psdrv);
  142. int PrintPSItemBar(ofstream &stream, PostScriptDrv &psdrv,
  143.             int x_offset, int char_offset, int max_len);
  144.  
  145. // Search functions
  146. void GrocDBSearch(Grocery &grocery, GrocDBItem item, UString &str,
  147.           MyTextWindow &textWin, const char *wildcard = 0);
  148.  
  149. // Version number for this windows program 
  150. char *VerNumber();
  151.  
  152. // Control key macro used for wxWindows key events
  153. #define CONTROL(c) ((c) & 037)
  154.  
  155. // Identification for the all wxWindows main menu functions
  156. enum MainMenu {
  157.   // File menu constants
  158.   FILE_QUIT = 1,
  159.   FILE_VBDSTATS,
  160.   FILE_EXPORT,
  161.   FILE_IMPORT,
  162.   FILE_BACKUP,
  163.   FILE_MERGE,
  164.   FILE_TEMPLATE,
  165.   FILE_COMPARE_INDEX,
  166.   FILE_REBUILD_INDEX,
  167.   
  168.   // Edit menu constants
  169.   EDIT_CUT,   
  170.   EDIT_COPY,  
  171.   EDIT_PASTE, 
  172.  
  173.   // Database menu constants
  174.   DB_DISPLAY_PURCHASING,
  175.   DB_DISPLAY_ALL,
  176.   DB_ADD,
  177.   DB_CHANGE,
  178.   DB_REMOVE,
  179.   DB_RESET_PURCHASING,
  180.   DB_SET_ALL_PURCHASING,
  181.   
  182.   // Find menu constants
  183.   FIND_BYNAME,
  184.   FIND_BYBRAND,
  185.   FIND_BYSTORE,
  186.   
  187.   // Print menu constants
  188.   WXPRINT_PRINT_PURCHASING,
  189.   WXPRINT_PRINT_ALL,
  190.   WXPRINT_PRINTER_SETUP,
  191.   WXPRINT_PREVIEW_PURCHASING,
  192.   WXPRINT_PREVIEW_ALL,
  193.   WXPRINT_PAGE_SETUP,
  194.   PRINT_POSTSCRIPT_PURCHASING,
  195.   PRINT_POSTSCRIPT_ALL,
  196.   PRINT_ASCII_PURCHASING,
  197.   PRINT_ASCII_ALL,
  198.   
  199.   // View menu constants
  200.   VIEW_CLEAR,
  201.   VIEW_TOTAL_PURCHASING,
  202.   VIEW_TOTAL_ALL,
  203.  
  204.   // Help menu constants
  205.   HELP_ABOUT,
  206.   HELP_USERLEVEL
  207. };
  208.  
  209. // Define control button tags for wxWindow panel buttons
  210. #define ADD_BUTTON_ADD     1
  211. #define ADD_BUTTON_CANCEL  2
  212. #define ADD_BUTTON_CLOSE   3
  213. #define ADD_BUTTON_REVERT  4
  214.  
  215. #define CHANGE_BUTTON_CM     11
  216. #define CHANGE_BUTTON_CANCEL 12
  217. #define CHANGE_BUTTON_CLOSE  13
  218. #define CHANGE_BUTTON_REVERT 14
  219. #define CHANGE_BUTTON_SH     15
  220.  
  221. #define DISPLAY_BUTTON_NX     21
  222. #define DISPLAY_BUTTON_PREV   22
  223. #define DISPLAY_BUTTON_CHANGE 23
  224. #define DISPLAY_BUTTON_CLOSE  24
  225. #define DISPLAY_BUTTON_REMOVE 25
  226.  
  227. #ifdef __USE_MSW_PRINTING__
  228. #define PAGE_DIALOG_BUTTON_CLOSE   400
  229. #define PAGE_DIALOG_BUTTON_ACCEPT  401
  230. #define PAGE_DIALOG_BUTTON_CANCEL  402
  231. #define PAGE_DIALOG_BUTTON_DEFAULT 403
  232. #endif // __USE_MSW_PRINTING__
  233.  
  234.  
  235. // Define a new text subwindow that can respond to drag-and-drop
  236. class MyTextWindow: public wxTextWindow
  237. {
  238. public:
  239.   MyTextWindow(wxFrame *frame, int x=-1, int y=-1, int width=-1, int height=-1,
  240.                long style=0):
  241.     wxTextWindow(frame, x, y, width, height, style) { DragAcceptFiles(TRUE); }
  242.  
  243. public:
  244.   void OnDropFiles(int n, char *files[], int x, int y) { LoadFile(files[0]); }
  245.   void OnChar(wxKeyEvent& event);
  246. };
  247.  
  248. // Define a new application type
  249. class MyApp: public wxApp
  250. {
  251. public:
  252.   wxFrame *OnInit();
  253. };
  254.  
  255. // Define a new frame type
  256. class MyFrame: public wxFrame
  257. {
  258. public:
  259.   MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
  260.  
  261. public:
  262.   void OnMenuCommand(int id);
  263.   void OnSize(int w, int h);
  264.   Bool OnClose();
  265.   void OnActivate(Bool active) { }
  266.   
  267. public:
  268.   MyTextWindow *textWin;  // Text window for main frame
  269.   wxPanel *apanel;        // Panel for adding objects
  270.   wxPanel *cpanel;        // Panel for changing object
  271.   wxPanel *d